#pragma once
#ifndef __DEFINE_H__
#define __DEFINE_H__

#define ALLTYPE(V)                                                             \
  /* New one here!!! */         \
  V(kParseToplevel)   \
  V(kStmtmulti)   \
  V(kToplevelStmt)   \
  V(kStmt)   \
  V(kCallStmt)   \
  V(kCreateRoleStmt)   \
  V(kCreateRoleStmt_1)   \
  V(kOptWith)   \
  V(kOptRoleList)   \
  V(kAlterOptRoleList)   \
  V(kAlterOptRoleElem)   \
  V(kCreateOptRoleElem)   \
  V(kCreateUserStmt)   \
  V(kCreateUserStmt_1)   \
  V(kAlterRoleStmt)   \
  V(kAlterRoleStmt_1)   \
  V(kAlterRoleStmt_2)   \
  V(kOptInDatabase)   \
  V(kAlterRoleSetStmt)   \
  V(kAlterRoleSetStmt_1)   \
  V(kAlterRoleSetStmt_2)   \
  V(kDropRoleStmt)   \
  V(kCreateGroupStmt)   \
  V(kCreateGroupStmt_1)   \
  V(kAlterGroupStmt)   \
  V(kAlterGroupStmt_1)   \
  V(kAddDrop)   \
  V(kCreateSchemaStmt)   \
  V(kCreateSchemaStmt_1)   \
  V(kCreateSchemaStmt_2)   \
  V(kOptSchemaName)   \
  V(kOptSchemaEltList)   \
  V(kSchemaStmt)   \
  V(kVariableSetStmt)   \
  V(kSetRest)   \
  V(kGenericSet)   \
  V(kSetRestMore)   \
  V(kVarName)   \
  V(kVarList)   \
  V(kVarValue)   \
  V(kIsoLevel)   \
  V(kOptBooleanOrString)   \
  V(kZoneValue)   \
  V(kZoneValue_1)   \
  V(kZoneValue_2)   \
  V(kOptEncoding)   \
  V(kNonReservedWordOrSconst)   \
  V(kVariableResetStmt)   \
  V(kResetRest)   \
  V(kGenericReset)   \
  V(kSetResetClause)   \
  V(kFunctionSetResetClause)   \
  V(kVariableShowStmt)   \
  V(kConstraintsSetStmt)   \
  V(kConstraintsSetList)   \
  V(kConstraintsSetMode)   \
  V(kCheckPointStmt)   \
  V(kDiscardStmt)   \
  V(kAlterTableStmt)   \
  V(kAlterTableStmt_1)   \
  V(kAlterTableStmt_2)   \
  V(kAlterTableStmt_3)   \
  V(kAlterTableStmt_4)   \
  V(kAlterTableStmt_5)   \
  V(kAlterTableStmt_6)   \
  V(kAlterTableStmt_7)   \
  V(kAlterTableStmt_8)   \
  V(kAlterTableStmt_9)   \
  V(kAlterTableCmds)   \
  V(kPartitionCmd)   \
  V(kIndexPartitionCmd)   \
  V(kAlterTableCmd)   \
  V(kAlterTableCmd_1)   \
  V(kAlterTableCmd_2)   \
  V(kAlterTableCmd_3)   \
  V(kAlterTableCmd_4)   \
  V(kAlterTableCmd_5)   \
  V(kAlterTableCmd_6)   \
  V(kAlterTableCmd_7)   \
  V(kAlterTableCmd_8)   \
  V(kAlterTableCmd_9)   \
  V(kAlterTableCmd_10)   \
  V(kAlterTableCmd_11)   \
  V(kAlterTableCmd_12)   \
  V(kAlterTableCmd_13)   \
  V(kAlterTableCmd_14)   \
  V(kAlterTableCmd_15)   \
  V(kAlterTableCmd_16)   \
  V(kAlterTableCmd_17)   \
  V(kAlterColumnDefault)   \
  V(kOptDropBehavior)   \
  V(kOptCollateClause)   \
  V(kAlterUsing)   \
  V(kReplicaIdentity)   \
  V(kReloptions)   \
  V(kOptReloptions)   \
  V(kReloptionList)   \
  V(kReloptionElem)   \
  V(kReloptionElem_1)   \
  V(kAlterIdentityColumnOptionList)   \
  V(kAlterIdentityColumnOption)   \
  V(kPartitionBoundSpec)   \
  V(kHashPartboundElem)   \
  V(kHashPartbound)   \
  V(kAlterCompositeTypeStmt)   \
  V(kAlterTypeCmds)   \
  V(kAlterTypeCmd)   \
  V(kAlterTypeCmd_1)   \
  V(kAlterTypeCmd_2)   \
  V(kAlterTypeCmd_3)   \
  V(kClosePortalStmt)   \
  V(kCopyStmt)   \
  V(kCopyStmt_1)   \
  V(kCopyStmt_2)   \
  V(kCopyStmt_3)   \
  V(kCopyStmt_4)   \
  V(kCopyStmt_5)   \
  V(kCopyStmt_6)   \
  V(kCopyStmt_7)   \
  V(kCopyStmt_8)   \
  V(kCopyStmt_9)   \
  V(kCopyStmt_10)   \
  V(kCopyStmt_11)   \
  V(kCopyFrom)   \
  V(kOptProgram)   \
  V(kCopyFileName)   \
  V(kCopyOptions)   \
  V(kCopyOptList)   \
  V(kCopyOptItem)   \
  V(kOptBinary)   \
  V(kCopyDelimiter)   \
  V(kOptUsing)   \
  V(kCopyGenericOptList)   \
  V(kCopyGenericOptElem)   \
  V(kCopyGenericOptArg)   \
  V(kCopyGenericOptArgList)   \
  V(kCopyGenericOptArgListItem)   \
  V(kCreateStmt)   \
  V(kCreateStmt_1)   \
  V(kCreateStmt_2)   \
  V(kCreateStmt_3)   \
  V(kCreateStmt_4)   \
  V(kCreateStmt_5)   \
  V(kCreateStmt_6)   \
  V(kCreateStmt_7)   \
  V(kCreateStmt_8)   \
  V(kCreateStmt_9)   \
  V(kCreateStmt_10)   \
  V(kCreateStmt_11)   \
  V(kCreateStmt_12)   \
  V(kCreateStmt_13)   \
  V(kCreateStmt_14)   \
  V(kCreateStmt_15)   \
  V(kCreateStmt_16)   \
  V(kCreateStmt_17)   \
  V(kCreateStmt_18)   \
  V(kCreateStmt_19)   \
  V(kCreateStmt_20)   \
  V(kCreateStmt_21)   \
  V(kCreateStmt_22)   \
  V(kCreateStmt_23)   \
  V(kCreateStmt_24)   \
  V(kCreateStmt_25)   \
  V(kCreateStmt_26)   \
  V(kCreateStmt_27)   \
  V(kCreateStmt_28)   \
  V(kCreateStmt_29)   \
  V(kCreateStmt_30)   \
  V(kCreateStmt_31)   \
  V(kCreateStmt_32)   \
  V(kCreateStmt_33)   \
  V(kCreateStmt_34)   \
  V(kCreateStmt_35)   \
  V(kCreateStmt_36)   \
  V(kCreateStmt_37)   \
  V(kCreateStmt_38)   \
  V(kCreateStmt_39)   \
  V(kCreateStmt_40)   \
  V(kCreateStmt_41)   \
  V(kCreateStmt_42)   \
  V(kCreateStmt_43)   \
  V(kCreateStmt_44)   \
  V(kOptTemp)   \
  V(kOptTableElementList)   \
  V(kOptTypedTableElementList)   \
  V(kTableElementList)   \
  V(kTypedTableElementList)   \
  V(kTableElement)   \
  V(kTypedTableElement)   \
  V(kColumnDef)   \
  V(kColumnDef_1)   \
  V(kColumnDef_2)   \
  V(kColumnDef_3)   \
  V(kColumnOptions)   \
  V(kColumnCompression)   \
  V(kOptColumnCompression)   \
  V(kColQualList)   \
  V(kColConstraint)   \
  V(kColConstraintElem)   \
  V(kColConstraintElem_1)   \
  V(kColConstraintElem_2)   \
  V(kGeneratedWhen)   \
  V(kConstraintAttr)   \
  V(kTableLikeClause)   \
  V(kTableLikeOptionList)   \
  V(kTableLikeOption)   \
  V(kTableConstraint)   \
  V(kConstraintElem)   \
  V(kConstraintElem_1)   \
  V(kConstraintElem_2)   \
  V(kConstraintElem_3)   \
  V(kConstraintElem_4)   \
  V(kConstraintElem_5)   \
  V(kConstraintElem_6)   \
  V(kConstraintElem_7)   \
  V(kConstraintElem_8)   \
  V(kConstraintElem_9)   \
  V(kConstraintElem_10)   \
  V(kConstraintElem_11)   \
  V(kConstraintElem_12)   \
  V(kConstraintElem_13)   \
  V(kConstraintElem_14)   \
  V(kConstraintElem_15)   \
  V(kOptNoInherit)   \
  V(kOptColumnList)   \
  V(kColumnList)   \
  V(kColumnElem)   \
  V(kOptCInclude)   \
  V(kKeyMatch)   \
  V(kExclusionConstraintList)   \
  V(kExclusionConstraintElem)   \
  V(kOptWhereClause)   \
  V(kKeyActions)   \
  V(kKeyUpdate)   \
  V(kKeyDelete)   \
  V(kKeyAction)   \
  V(kOptInherit)   \
  V(kOptPartitionSpec)   \
  V(kPartitionSpec)   \
  V(kPartParams)   \
  V(kPartElem)   \
  V(kPartElem_1)   \
  V(kPartElem_2)   \
  V(kPartElem_3)   \
  V(kTableAccessMethodClause)   \
  V(kOnCommitOption)   \
  V(kOptTableSpace)   \
  V(kOptConsTableSpace)   \
  V(kExistingIndex)   \
  V(kCreateStatsStmt)   \
  V(kCreateStatsStmt_1)   \
  V(kCreateStatsStmt_2)   \
  V(kCreateStatsStmt_3)   \
  V(kCreateStatsStmt_4)   \
  V(kStatsParams)   \
  V(kStatsParam)   \
  V(kAlterStatsStmt)   \
  V(kCreateAsStmt)   \
  V(kCreateAsStmt_1)   \
  V(kCreateAsStmt_2)   \
  V(kCreateAsStmt_3)   \
  V(kCreateAsStmt_4)   \
  V(kCreateAsTarget)   \
  V(kCreateAsTarget_1)   \
  V(kCreateAsTarget_2)   \
  V(kCreateAsTarget_3)   \
  V(kCreateAsTarget_4)   \
  V(kOptWithData)   \
  V(kCreateMatViewStmt)   \
  V(kCreateMatViewStmt_1)   \
  V(kCreateMatViewStmt_2)   \
  V(kCreateMatViewStmt_3)   \
  V(kCreateMatViewStmt_4)   \
  V(kCreateMvTarget)   \
  V(kCreateMvTarget_1)   \
  V(kCreateMvTarget_2)   \
  V(kCreateMvTarget_3)   \
  V(kOptNoLog)   \
  V(kRefreshMatViewStmt)   \
  V(kRefreshMatViewStmt_1)   \
  V(kCreateSeqStmt)   \
  V(kCreateSeqStmt_1)   \
  V(kCreateSeqStmt_2)   \
  V(kAlterSeqStmt)   \
  V(kOptSeqOptList)   \
  V(kOptParenthesizedSeqOptList)   \
  V(kSeqOptList)   \
  V(kSeqOptElem)   \
  V(kOptBy)   \
  V(kNumericOnly)   \
  V(kNumericOnlyList)   \
  V(kCreatePLangStmt)   \
  V(kCreatePLangStmt_1)   \
  V(kCreatePLangStmt_2)   \
  V(kCreatePLangStmt_3)   \
  V(kCreatePLangStmt_4)   \
  V(kCreatePLangStmt_5)   \
  V(kCreatePLangStmt_6)   \
  V(kCreatePLangStmt_7)   \
  V(kOptTrusted)   \
  V(kHandlerName)   \
  V(kOptInlineHandler)   \
  V(kValidatorClause)   \
  V(kOptValidator)   \
  V(kOptProcedural)   \
  V(kCreateTableSpaceStmt)   \
  V(kCreateTableSpaceStmt_1)   \
  V(kCreateTableSpaceStmt_2)   \
  V(kOptTableSpaceOwner)   \
  V(kDropTableSpaceStmt)   \
  V(kCreateExtensionStmt)   \
  V(kCreateExtensionStmt_1)   \
  V(kCreateExtensionStmt_2)   \
  V(kCreateExtensionOptList)   \
  V(kCreateExtensionOptItem)   \
  V(kAlterExtensionStmt)   \
  V(kAlterExtensionOptList)   \
  V(kAlterExtensionOptItem)   \
  V(kAlterExtensionContentsStmt)   \
  V(kAlterExtensionContentsStmt_1)   \
  V(kAlterExtensionContentsStmt_2)   \
  V(kAlterExtensionContentsStmt_3)   \
  V(kAlterExtensionContentsStmt_4)   \
  V(kAlterExtensionContentsStmt_5)   \
  V(kAlterExtensionContentsStmt_6)   \
  V(kAlterExtensionContentsStmt_7)   \
  V(kAlterExtensionContentsStmt_8)   \
  V(kAlterExtensionContentsStmt_9)   \
  V(kAlterExtensionContentsStmt_10)   \
  V(kAlterExtensionContentsStmt_11)   \
  V(kAlterExtensionContentsStmt_12)   \
  V(kAlterExtensionContentsStmt_13)   \
  V(kAlterExtensionContentsStmt_14)   \
  V(kAlterExtensionContentsStmt_15)   \
  V(kAlterExtensionContentsStmt_16)   \
  V(kAlterExtensionContentsStmt_17)   \
  V(kAlterExtensionContentsStmt_18)   \
  V(kAlterExtensionContentsStmt_19)   \
  V(kCreateFdwStmt)   \
  V(kCreateFdwStmt_1)   \
  V(kFdwOption)   \
  V(kFdwOptions)   \
  V(kOptFdwOptions)   \
  V(kAlterFdwStmt)   \
  V(kAlterFdwStmt_1)   \
  V(kCreateGenericOptions)   \
  V(kGenericOptionList)   \
  V(kAlterGenericOptions)   \
  V(kAlterGenericOptionList)   \
  V(kAlterGenericOptionElem)   \
  V(kGenericOptionElem)   \
  V(kGenericOptionName)   \
  V(kGenericOptionArg)   \
  V(kCreateForeignServerStmt)   \
  V(kCreateForeignServerStmt_1)   \
  V(kCreateForeignServerStmt_2)   \
  V(kCreateForeignServerStmt_3)   \
  V(kCreateForeignServerStmt_4)   \
  V(kCreateForeignServerStmt_5)   \
  V(kCreateForeignServerStmt_6)   \
  V(kOptType)   \
  V(kForeignServerVersion)   \
  V(kOptForeignServerVersion)   \
  V(kAlterForeignServerStmt)   \
  V(kAlterForeignServerStmt_1)   \
  V(kCreateForeignTableStmt)   \
  V(kCreateForeignTableStmt_1)   \
  V(kCreateForeignTableStmt_2)   \
  V(kCreateForeignTableStmt_3)   \
  V(kCreateForeignTableStmt_4)   \
  V(kCreateForeignTableStmt_5)   \
  V(kCreateForeignTableStmt_6)   \
  V(kCreateForeignTableStmt_7)   \
  V(kCreateForeignTableStmt_8)   \
  V(kCreateForeignTableStmt_9)   \
  V(kCreateForeignTableStmt_10)   \
  V(kCreateForeignTableStmt_11)   \
  V(kCreateForeignTableStmt_12)   \
  V(kCreateForeignTableStmt_13)   \
  V(kCreateForeignTableStmt_14)   \
  V(kImportForeignSchemaStmt)   \
  V(kImportForeignSchemaStmt_1)   \
  V(kImportForeignSchemaStmt_2)   \
  V(kImportForeignSchemaStmt_3)   \
  V(kImportQualificationType)   \
  V(kImportQualification)   \
  V(kCreateUserMappingStmt)   \
  V(kCreateUserMappingStmt_1)   \
  V(kCreateUserMappingStmt_2)   \
  V(kAuthIdent)   \
  V(kDropUserMappingStmt)   \
  V(kAlterUserMappingStmt)   \
  V(kAlterUserMappingStmt_1)   \
  V(kCreatePolicyStmt)   \
  V(kCreatePolicyStmt_1)   \
  V(kCreatePolicyStmt_2)   \
  V(kCreatePolicyStmt_3)   \
  V(kCreatePolicyStmt_4)   \
  V(kCreatePolicyStmt_5)   \
  V(kAlterPolicyStmt)   \
  V(kAlterPolicyStmt_1)   \
  V(kAlterPolicyStmt_2)   \
  V(kAlterPolicyStmt_3)   \
  V(kRowSecurityOptionalExpr)   \
  V(kRowSecurityOptionalWithCheck)   \
  V(kRowSecurityDefaultToRole)   \
  V(kRowSecurityOptionalToRole)   \
  V(kRowSecurityDefaultPermissive)   \
  V(kRowSecurityDefaultForCmd)   \
  V(kRowSecurityCmd)   \
  V(kCreateAmStmt)   \
  V(kCreateAmStmt_1)   \
  V(kAmType)   \
  V(kCreateTrigStmt)   \
  V(kCreateTrigStmt_1)   \
  V(kCreateTrigStmt_2)   \
  V(kCreateTrigStmt_3)   \
  V(kCreateTrigStmt_4)   \
  V(kCreateTrigStmt_5)   \
  V(kCreateTrigStmt_6)   \
  V(kCreateTrigStmt_7)   \
  V(kCreateTrigStmt_8)   \
  V(kCreateTrigStmt_9)   \
  V(kCreateTrigStmt_10)   \
  V(kCreateTrigStmt_11)   \
  V(kCreateTrigStmt_12)   \
  V(kCreateTrigStmt_13)   \
  V(kCreateTrigStmt_14)   \
  V(kCreateTrigStmt_15)   \
  V(kCreateTrigStmt_16)   \
  V(kCreateTrigStmt_17)   \
  V(kTriggerActionTime)   \
  V(kTriggerEvents)   \
  V(kTriggerOneEvent)   \
  V(kTriggerReferencing)   \
  V(kTriggerTransitions)   \
  V(kTriggerTransition)   \
  V(kTriggerTransition_1)   \
  V(kTriggerTransition_2)   \
  V(kTransitionOldOrNew)   \
  V(kTransitionRowOrTable)   \
  V(kTransitionRelName)   \
  V(kTriggerForSpec)   \
  V(kTriggerForOptEach)   \
  V(kTriggerForType)   \
  V(kTriggerWhen)   \
  V(kFUNCTIONOrPROCEDURE)   \
  V(kTriggerFuncArgs)   \
  V(kTriggerFuncArg)   \
  V(kOptConstrFromTable)   \
  V(kConstraintAttributeSpec)   \
  V(kConstraintAttributeElem)   \
  V(kCreateEventTrigStmt)   \
  V(kCreateEventTrigStmt_1)   \
  V(kCreateEventTrigStmt_2)   \
  V(kCreateEventTrigStmt_3)   \
  V(kCreateEventTrigStmt_4)   \
  V(kCreateEventTrigStmt_5)   \
  V(kEventTriggerWhenList)   \
  V(kEventTriggerWhenItem)   \
  V(kEventTriggerValueList)   \
  V(kAlterEventTrigStmt)   \
  V(kEnableTrigger)   \
  V(kCreateAssertionStmt)   \
  V(kCreateAssertionStmt_1)   \
  V(kDefineStmt)   \
  V(kDefineStmt_1)   \
  V(kDefineStmt_2)   \
  V(kDefineStmt_3)   \
  V(kDefinition)   \
  V(kDefList)   \
  V(kDefElem)   \
  V(kDefArg)   \
  V(kOldAggrDefinition)   \
  V(kOldAggrList)   \
  V(kOldAggrElem)   \
  V(kOptEnumValList)   \
  V(kEnumValList)   \
  V(kAlterEnumStmt)   \
  V(kAlterEnumStmt_1)   \
  V(kAlterEnumStmt_2)   \
  V(kAlterEnumStmt_3)   \
  V(kAlterEnumStmt_4)   \
  V(kAlterEnumStmt_5)   \
  V(kAlterEnumStmt_6)   \
  V(kOptIfNotExists)   \
  V(kCreateOpClassStmt)   \
  V(kCreateOpClassStmt_1)   \
  V(kCreateOpClassStmt_2)   \
  V(kCreateOpClassStmt_3)   \
  V(kCreateOpClassStmt_4)   \
  V(kOpclassItemList)   \
  V(kOpclassItem)   \
  V(kOpclassItem_1)   \
  V(kOpclassItem_2)   \
  V(kOpclassItem_3)   \
  V(kOpclassItem_4)   \
  V(kOpclassItem_5)   \
  V(kOptDefault)   \
  V(kOptOpfamily)   \
  V(kOpclassPurpose)   \
  V(kOptRecheck)   \
  V(kCreateOpFamilyStmt)   \
  V(kAlterOpFamilyStmt)   \
  V(kAlterOpFamilyStmt_1)   \
  V(kAlterOpFamilyStmt_2)   \
  V(kOpclassDropList)   \
  V(kOpclassDrop)   \
  V(kDropOpClassStmt)   \
  V(kDropOpClassStmt_1)   \
  V(kDropOpClassStmt_2)   \
  V(kDropOpFamilyStmt)   \
  V(kDropOpFamilyStmt_1)   \
  V(kDropOpFamilyStmt_2)   \
  V(kDropOwnedStmt)   \
  V(kReassignOwnedStmt)   \
  V(kDropStmt)   \
  V(kDropStmt_1)   \
  V(kDropStmt_2)   \
  V(kDropStmt_3)   \
  V(kDropStmt_4)   \
  V(kDropStmt_5)   \
  V(kDropStmt_6)   \
  V(kDropStmt_7)   \
  V(kDropStmt_8)   \
  V(kObjectTypeAnyName)   \
  V(kObjectTypeName)   \
  V(kDropTypeName)   \
  V(kObjectTypeNameOnAnyName)   \
  V(kAnyNameList)   \
  V(kAnyName)   \
  V(kAttrs)   \
  V(kTypeNameList)   \
  V(kTruncateStmt)   \
  V(kTruncateStmt_1)   \
  V(kTruncateStmt_2)   \
  V(kOptRestartSeqs)   \
  V(kCommentStmt)   \
  V(kCommentStmt_1)   \
  V(kCommentStmt_2)   \
  V(kCommentStmt_3)   \
  V(kCommentStmt_4)   \
  V(kCommentStmt_5)   \
  V(kCommentStmt_6)   \
  V(kCommentStmt_7)   \
  V(kCommentStmt_8)   \
  V(kCommentStmt_9)   \
  V(kCommentStmt_10)   \
  V(kCommentText)   \
  V(kSecLabelStmt)   \
  V(kSecLabelStmt_1)   \
  V(kSecLabelStmt_2)   \
  V(kSecLabelStmt_3)   \
  V(kSecLabelStmt_4)   \
  V(kSecLabelStmt_5)   \
  V(kSecLabelStmt_6)   \
  V(kSecLabelStmt_7)   \
  V(kSecLabelStmt_8)   \
  V(kSecLabelStmt_9)   \
  V(kSecLabelStmt_10)   \
  V(kSecLabelStmt_11)   \
  V(kSecLabelStmt_12)   \
  V(kOptProvider)   \
  V(kSecurityLabel)   \
  V(kFetchStmt)   \
  V(kFetchArgs)   \
  V(kFetchArgs_1)   \
  V(kFetchArgs_2)   \
  V(kFetchArgs_3)   \
  V(kFetchArgs_4)   \
  V(kFetchArgs_5)   \
  V(kFromIn)   \
  V(kOptFromIn)   \
  V(kGrantStmt)   \
  V(kGrantStmt_1)   \
  V(kGrantStmt_2)   \
  V(kGrantStmt_3)   \
  V(kRevokeStmt)   \
  V(kRevokeStmt_1)   \
  V(kRevokeStmt_2)   \
  V(kRevokeStmt_3)   \
  V(kRevokeStmt_4)   \
  V(kRevokeStmt_5)   \
  V(kRevokeStmt_6)   \
  V(kPrivileges)   \
  V(kPrivilegeList)   \
  V(kPrivilege)   \
  V(kPrivilegeTarget)   \
  V(kGranteeList)   \
  V(kGrantee)   \
  V(kOptGrantGrantOption)   \
  V(kGrantRoleStmt)   \
  V(kGrantRoleStmt_1)   \
  V(kGrantRoleStmt_2)   \
  V(kRevokeRoleStmt)   \
  V(kRevokeRoleStmt_1)   \
  V(kRevokeRoleStmt_2)   \
  V(kRevokeRoleStmt_3)   \
  V(kRevokeRoleStmt_4)   \
  V(kOptGrantAdminOption)   \
  V(kOptGrantedBy)   \
  V(kAlterDefaultPrivilegesStmt)   \
  V(kDefACLOptionList)   \
  V(kDefACLOption)   \
  V(kDefACLAction)   \
  V(kDefACLAction_1)   \
  V(kDefACLAction_2)   \
  V(kDefACLAction_3)   \
  V(kDefACLAction_4)   \
  V(kDefACLAction_5)   \
  V(kDefACLAction_6)   \
  V(kDefaclPrivilegeTarget)   \
  V(kIndexStmt)   \
  V(kIndexStmt_1)   \
  V(kIndexStmt_2)   \
  V(kIndexStmt_3)   \
  V(kIndexStmt_4)   \
  V(kIndexStmt_5)   \
  V(kIndexStmt_6)   \
  V(kIndexStmt_7)   \
  V(kIndexStmt_8)   \
  V(kIndexStmt_9)   \
  V(kIndexStmt_10)   \
  V(kIndexStmt_11)   \
  V(kIndexStmt_12)   \
  V(kIndexStmt_13)   \
  V(kIndexStmt_14)   \
  V(kIndexStmt_15)   \
  V(kIndexStmt_16)   \
  V(kOptUnique)   \
  V(kOptConcurrently)   \
  V(kOptIndexName)   \
  V(kAccessMethodClause)   \
  V(kIndexParams)   \
  V(kIndexElemOptions)   \
  V(kIndexElemOptions_1)   \
  V(kIndexElemOptions_2)   \
  V(kIndexElemOptions_3)   \
  V(kIndexElemOptions_4)   \
  V(kIndexElemOptions_5)   \
  V(kIndexElem)   \
  V(kOptInclude)   \
  V(kIndexIncludingParams)   \
  V(kOptCollate)   \
  V(kOptClass)   \
  V(kOptAscDesc)   \
  V(kOptNullsOrder)   \
  V(kCreateFunctionStmt)   \
  V(kCreateFunctionStmt_1)   \
  V(kCreateFunctionStmt_2)   \
  V(kCreateFunctionStmt_3)   \
  V(kCreateFunctionStmt_4)   \
  V(kCreateFunctionStmt_5)   \
  V(kCreateFunctionStmt_6)   \
  V(kCreateFunctionStmt_7)   \
  V(kCreateFunctionStmt_8)   \
  V(kCreateFunctionStmt_9)   \
  V(kCreateFunctionStmt_10)   \
  V(kCreateFunctionStmt_11)   \
  V(kCreateFunctionStmt_12)   \
  V(kCreateFunctionStmt_13)   \
  V(kCreateFunctionStmt_14)   \
  V(kOptOrReplace)   \
  V(kFuncArgs)   \
  V(kFuncArgsList)   \
  V(kFunctionWithArgtypesList)   \
  V(kFunctionWithArgtypes)   \
  V(kFuncArgsWithDefaults)   \
  V(kFuncArgsWithDefaultsList)   \
  V(kFuncArg)   \
  V(kFuncArg_1)   \
  V(kFuncArg_2)   \
  V(kArgClass)   \
  V(kParamName)   \
  V(kFuncReturn)   \
  V(kFuncType)   \
  V(kFuncArgWithDefault)   \
  V(kAggrArg)   \
  V(kAggrArgs)   \
  V(kAggrArgsList)   \
  V(kAggregateWithArgtypes)   \
  V(kAggregateWithArgtypesList)   \
  V(kOptCreatefuncOptList)   \
  V(kCreatefuncOptList)   \
  V(kCommonFuncOptItem)   \
  V(kCreatefuncOptItem)   \
  V(kFuncAs)   \
  V(kReturnStmt)   \
  V(kOptRoutineBody)   \
  V(kRoutineBodyStmtList)   \
  V(kRoutineBodyStmt)   \
  V(kTransformTypeList)   \
  V(kOptDefinition)   \
  V(kTableFuncColumn)   \
  V(kTableFuncColumnList)   \
  V(kAlterFunctionStmt)   \
  V(kAlterFunctionStmt_1)   \
  V(kAlterFunctionStmt_2)   \
  V(kAlterFunctionStmt_3)   \
  V(kAlterfuncOptList)   \
  V(kOptRestrict)   \
  V(kRemoveFuncStmt)   \
  V(kRemoveAggrStmt)   \
  V(kRemoveOperStmt)   \
  V(kOperArgtypes)   \
  V(kAnyOperator)   \
  V(kOperatorWithArgtypesList)   \
  V(kOperatorWithArgtypes)   \
  V(kDoStmt)   \
  V(kDostmtOptList)   \
  V(kDostmtOptItem)   \
  V(kCreateCastStmt)   \
  V(kCreateCastStmt_1)   \
  V(kCreateCastStmt_2)   \
  V(kCreateCastStmt_3)   \
  V(kCreateCastStmt_4)   \
  V(kCastContext)   \
  V(kDropCastStmt)   \
  V(kDropCastStmt_1)   \
  V(kDropCastStmt_2)   \
  V(kOptIfExists)   \
  V(kCreateTransformStmt)   \
  V(kCreateTransformStmt_1)   \
  V(kCreateTransformStmt_2)   \
  V(kTransformElementList)   \
  V(kDropTransformStmt)   \
  V(kDropTransformStmt_1)   \
  V(kDropTransformStmt_2)   \
  V(kReindexStmt)   \
  V(kReindexStmt_1)   \
  V(kReindexStmt_2)   \
  V(kReindexStmt_3)   \
  V(kReindexStmt_4)   \
  V(kReindexStmt_5)   \
  V(kReindexStmt_6)   \
  V(kReindexTargetType)   \
  V(kReindexTargetMultitable)   \
  V(kAlterTblSpcStmt)   \
  V(kRenameStmt)   \
  V(kRenameStmt_1)   \
  V(kRenameStmt_2)   \
  V(kRenameStmt_3)   \
  V(kRenameStmt_4)   \
  V(kRenameStmt_5)   \
  V(kRenameStmt_6)   \
  V(kRenameStmt_7)   \
  V(kRenameStmt_8)   \
  V(kRenameStmt_9)   \
  V(kRenameStmt_10)   \
  V(kRenameStmt_11)   \
  V(kRenameStmt_12)   \
  V(kRenameStmt_13)   \
  V(kRenameStmt_14)   \
  V(kRenameStmt_15)   \
  V(kRenameStmt_16)   \
  V(kRenameStmt_17)   \
  V(kRenameStmt_18)   \
  V(kRenameStmt_19)   \
  V(kRenameStmt_20)   \
  V(kRenameStmt_21)   \
  V(kRenameStmt_22)   \
  V(kRenameStmt_23)   \
  V(kRenameStmt_24)   \
  V(kRenameStmt_25)   \
  V(kRenameStmt_26)   \
  V(kRenameStmt_27)   \
  V(kRenameStmt_28)   \
  V(kOptColumn)   \
  V(kOptSetData)   \
  V(kAlterObjectDependsStmt)   \
  V(kAlterObjectDependsStmt_1)   \
  V(kAlterObjectDependsStmt_2)   \
  V(kAlterObjectDependsStmt_3)   \
  V(kAlterObjectDependsStmt_4)   \
  V(kAlterObjectDependsStmt_5)   \
  V(kAlterObjectDependsStmt_6)   \
  V(kAlterObjectDependsStmt_7)   \
  V(kOptNo)   \
  V(kAlterObjectSchemaStmt)   \
  V(kAlterObjectSchemaStmt_1)   \
  V(kAlterObjectSchemaStmt_2)   \
  V(kAlterOperatorStmt)   \
  V(kOperatorDefList)   \
  V(kOperatorDefElem)   \
  V(kOperatorDefArg)   \
  V(kAlterTypeStmt)   \
  V(kAlterOwnerStmt)   \
  V(kAlterOwnerStmt_1)   \
  V(kAlterOwnerStmt_2)   \
  V(kAlterOwnerStmt_3)   \
  V(kCreatePublicationStmt)   \
  V(kCreatePublicationStmt_1)   \
  V(kOptPublicationForTables)   \
  V(kPublicationForTables)   \
  V(kAlterPublicationStmt)   \
  V(kCreateSubscriptionStmt)   \
  V(kCreateSubscriptionStmt_1)   \
  V(kCreateSubscriptionStmt_2)   \
  V(kAlterSubscriptionStmt)   \
  V(kAlterSubscriptionStmt_1)   \
  V(kAlterSubscriptionStmt_2)   \
  V(kAlterSubscriptionStmt_3)   \
  V(kDropSubscriptionStmt)   \
  V(kRuleStmt)   \
  V(kRuleStmt_1)   \
  V(kRuleStmt_2)   \
  V(kRuleStmt_3)   \
  V(kRuleStmt_4)   \
  V(kRuleStmt_5)   \
  V(kRuleActionList)   \
  V(kRuleActionMulti)   \
  V(kRuleActionStmt)   \
  V(kRuleActionStmtOrEmpty)   \
  V(kEvent)   \
  V(kOptInstead)   \
  V(kNotifyStmt)   \
  V(kNotifyPayload)   \
  V(kListenStmt)   \
  V(kUnlistenStmt)   \
  V(kTransactionStmt)   \
  V(kTransactionStmtLegacy)   \
  V(kOptTransaction)   \
  V(kTransactionModeItem)   \
  V(kTransactionModeList)   \
  V(kTransactionModeListOrEmpty)   \
  V(kOptTransactionChain)   \
  V(kViewStmt)   \
  V(kViewStmt_1)   \
  V(kViewStmt_2)   \
  V(kViewStmt_3)   \
  V(kViewStmt_4)   \
  V(kViewStmt_5)   \
  V(kViewStmt_6)   \
  V(kViewStmt_7)   \
  V(kViewStmt_8)   \
  V(kViewStmt_9)   \
  V(kViewStmt_10)   \
  V(kViewStmt_11)   \
  V(kViewStmt_12)   \
  V(kViewStmt_13)   \
  V(kViewStmt_14)   \
  V(kViewStmt_15)   \
  V(kViewStmt_16)   \
  V(kOptCheckOption)   \
  V(kLoadStmt)   \
  V(kCreatedbStmt)   \
  V(kCreatedbStmt_1)   \
  V(kCreatedbOptList)   \
  V(kCreatedbOptItems)   \
  V(kCreatedbOptItem)   \
  V(kCreatedbOptItem_1)   \
  V(kCreatedbOptItem_2)   \
  V(kCreatedbOptName)   \
  V(kOptEqual)   \
  V(kAlterDatabaseStmt)   \
  V(kAlterDatabaseSetStmt)   \
  V(kDropdbStmt)   \
  V(kDropdbStmt_1)   \
  V(kDropdbStmt_2)   \
  V(kDropOptionList)   \
  V(kDropOption)   \
  V(kAlterCollationStmt)   \
  V(kAlterSystemStmt)   \
  V(kCreateDomainStmt)   \
  V(kCreateDomainStmt_1)   \
  V(kCreateDomainStmt_2)   \
  V(kAlterDomainStmt)   \
  V(kAlterDomainStmt_1)   \
  V(kAlterDomainStmt_2)   \
  V(kOptAs)   \
  V(kAlterTSDictionaryStmt)   \
  V(kAlterTSConfigurationStmt)   \
  V(kAlterTSConfigurationStmt_1)   \
  V(kAlterTSConfigurationStmt_2)   \
  V(kAlterTSConfigurationStmt_3)   \
  V(kAlterTSConfigurationStmt_4)   \
  V(kAlterTSConfigurationStmt_5)   \
  V(kAlterTSConfigurationStmt_6)   \
  V(kAlterTSConfigurationStmt_7)   \
  V(kAlterTSConfigurationStmt_8)   \
  V(kAlterTSConfigurationStmt_9)   \
  V(kAnyWith)   \
  V(kCreateConversionStmt)   \
  V(kCreateConversionStmt_1)   \
  V(kCreateConversionStmt_2)   \
  V(kCreateConversionStmt_3)   \
  V(kClusterStmt)   \
  V(kClusterStmt_1)   \
  V(kClusterStmt_2)   \
  V(kClusterStmt_3)   \
  V(kClusterIndexSpecification)   \
  V(kVacuumStmt)   \
  V(kVacuumStmt_1)   \
  V(kVacuumStmt_2)   \
  V(kVacuumStmt_3)   \
  V(kAnalyzeStmt)   \
  V(kAnalyzeStmt_1)   \
  V(kAnalyzeStmt_2)   \
  V(kUtilityOptionList)   \
  V(kAnalyzeKeyword)   \
  V(kUtilityOptionElem)   \
  V(kUtilityOptionName)   \
  V(kUtilityOptionArg)   \
  V(kOptAnalyze)   \
  V(kOptVerbose)   \
  V(kOptFull)   \
  V(kOptFreeze)   \
  V(kOptNameList)   \
  V(kVacuumRelation)   \
  V(kVacuumRelationList)   \
  V(kOptVacuumRelationList)   \
  V(kExplainStmt)   \
  V(kExplainStmt_1)   \
  V(kExplainableStmt)   \
  V(kPrepareStmt)   \
  V(kPrepareStmt_1)   \
  V(kPrepTypeClause)   \
  V(kPreparableStmt)   \
  V(kExecuteStmt)   \
  V(kExecuteStmt_1)   \
  V(kExecuteStmt_2)   \
  V(kExecuteStmt_3)   \
  V(kExecuteStmt_4)   \
  V(kExecuteStmt_5)   \
  V(kExecuteStmt_6)   \
  V(kExecuteParamClause)   \
  V(kDeallocateStmt)   \
  V(kInsertStmt)   \
  V(kInsertStmt_1)   \
  V(kInsertStmt_2)   \
  V(kInsertStmt_3)   \
  V(kInsertTarget)   \
  V(kInsertRest)   \
  V(kInsertRest_1)   \
  V(kOverrideKind)   \
  V(kInsertColumnList)   \
  V(kInsertColumnItem)   \
  V(kOptOnConflict)   \
  V(kOptOnConflict_1)   \
  V(kOptConfExpr)   \
  V(kReturningClause)   \
  V(kDeleteStmt)   \
  V(kDeleteStmt_1)   \
  V(kDeleteStmt_2)   \
  V(kDeleteStmt_3)   \
  V(kUsingClause)   \
  V(kLockStmt)   \
  V(kLockStmt_1)   \
  V(kLockStmt_2)   \
  V(kOptLock)   \
  V(kLockType)   \
  V(kOptNowait)   \
  V(kOptNowaitOrSkip)   \
  V(kUpdateStmt)   \
  V(kUpdateStmt_1)   \
  V(kUpdateStmt_2)   \
  V(kUpdateStmt_3)   \
  V(kUpdateStmt_4)   \
  V(kSetClauseList)   \
  V(kSetClause)   \
  V(kSetTarget)   \
  V(kSetTargetList)   \
  V(kDeclareCursorStmt)   \
  V(kDeclareCursorStmt_1)   \
  V(kDeclareCursorStmt_2)   \
  V(kCursorName)   \
  V(kCursorOptions)   \
  V(kOptHold)   \
  V(kSelectStmt)   \
  V(kSelectWithParens)   \
  V(kSelectNoParens)   \
  V(kSelectNoParens_1)   \
  V(kSelectNoParens_2)   \
  V(kSelectNoParens_3)   \
  V(kSelectNoParens_4)   \
  V(kSelectNoParens_5)   \
  V(kSelectNoParens_6)   \
  V(kSelectNoParens_7)   \
  V(kSelectNoParens_8)   \
  V(kSelectNoParens_9)   \
  V(kSelectNoParens_10)   \
  V(kSelectNoParens_11)   \
  V(kSelectClause)   \
  V(kSimpleSelect)   \
  V(kSimpleSelect_1)   \
  V(kSimpleSelect_2)   \
  V(kSimpleSelect_3)   \
  V(kSimpleSelect_4)   \
  V(kSimpleSelect_5)   \
  V(kSimpleSelect_6)   \
  V(kSimpleSelect_7)   \
  V(kSimpleSelect_8)   \
  V(kSimpleSelect_9)   \
  V(kSimpleSelect_10)   \
  V(kSimpleSelect_11)   \
  V(kSimpleSelect_12)   \
  V(kSimpleSelect_13)   \
  V(kSimpleSelect_14)   \
  V(kSimpleSelect_15)   \
  V(kWithClause)   \
  V(kCteList)   \
  V(kCommonTableExpr)   \
  V(kCommonTableExpr_1)   \
  V(kCommonTableExpr_2)   \
  V(kCommonTableExpr_3)   \
  V(kCommonTableExpr_4)   \
  V(kOptMaterialized)   \
  V(kOptSearchClause)   \
  V(kOptCycleClause)   \
  V(kOptCycleClause_1)   \
  V(kOptCycleClause_2)   \
  V(kOptCycleClause_3)   \
  V(kOptCycleClause_4)   \
  V(kOptWithClause)   \
  V(kIntoClause)   \
  V(kOptTempTableName)   \
  V(kOptTable)   \
  V(kSetQuantifier)   \
  V(kDistinctClause)   \
  V(kOptAllClause)   \
  V(kOptDistinctClause)   \
  V(kOptSortClause)   \
  V(kSortClause)   \
  V(kSortbyList)   \
  V(kSortby)   \
  V(kSortby_1)   \
  V(kSortby_2)   \
  V(kSelectLimit)   \
  V(kOptSelectLimit)   \
  V(kLimitClause)   \
  V(kLimitClause_1)   \
  V(kLimitClause_2)   \
  V(kOffsetClause)   \
  V(kSelectLimitValue)   \
  V(kSelectOffsetValue)   \
  V(kSelectFetchFirstValue)   \
  V(kIOrFConst)   \
  V(kRowOrRows)   \
  V(kFirstOrNext)   \
  V(kGroupClause)   \
  V(kGroupByList)   \
  V(kGroupByItem)   \
  V(kRollupClause)   \
  V(kCubeClause)   \
  V(kGroupingSetsClause)   \
  V(kHavingClause)   \
  V(kForLockingClause)   \
  V(kOptForLockingClause)   \
  V(kForLockingItems)   \
  V(kForLockingItem)   \
  V(kForLockingItem_1)   \
  V(kForLockingStrength)   \
  V(kLockedRelsList)   \
  V(kValuesClause)   \
  V(kFromClause)   \
  V(kFromList)   \
  V(kTableRef)   \
  V(kTableRef_1)   \
  V(kJoinedTable)   \
  V(kJoinedTable_1)   \
  V(kJoinedTable_2)   \
  V(kJoinedTable_3)   \
  V(kJoinedTable_4)   \
  V(kAliasClause)   \
  V(kOptAliasClause)   \
  V(kOptAliasClauseForJoinUsing)   \
  V(kFuncAliasClause)   \
  V(kJoinType)   \
  V(kOptOuter)   \
  V(kJoinQual)   \
  V(kRelationExpr)   \
  V(kRelationExprList)   \
  V(kRelationExprOptAlias)   \
  V(kTablesampleClause)   \
  V(kTablesampleClause_1)   \
  V(kOptRepeatableClause)   \
  V(kFuncTable)   \
  V(kRowsfromItem)   \
  V(kRowsfromList)   \
  V(kOptColDefList)   \
  V(kOptOrdinality)   \
  V(kWhereClause)   \
  V(kWhereOrCurrentClause)   \
  V(kOptTableFuncElementList)   \
  V(kTableFuncElementList)   \
  V(kTableFuncElement)   \
  V(kTableFuncElement_1)   \
  V(kXmltable)   \
  V(kXmltable_1)   \
  V(kXmltable_2)   \
  V(kXmltable_3)   \
  V(kXmltableColumnList)   \
  V(kXmltableColumnEl)   \
  V(kXmltableColumnEl_1)   \
  V(kXmltableColumnOptionList)   \
  V(kXmltableColumnOptionEl)   \
  V(kXmlNamespaceList)   \
  V(kXmlNamespaceEl)   \
  V(kTypename)   \
  V(kOptArrayBounds)   \
  V(kSimpleTypename)   \
  V(kConstTypename)   \
  V(kGenericType)   \
  V(kGenericType_1)   \
  V(kOptTypeModifiers)   \
  V(kNumeric)   \
  V(kOptFloat)   \
  V(kBit)   \
  V(kConstBit)   \
  V(kBitWithLength)   \
  V(kBitWithoutLength)   \
  V(kCharacter)   \
  V(kConstCharacter)   \
  V(kCharacterWithLength)   \
  V(kCharacterWithoutLength)   \
  V(kOptVarying)   \
  V(kConstDatetime)   \
  V(kConstInterval)   \
  V(kOptTimezone)   \
  V(kOptInterval)   \
  V(kIntervalSecond)   \
  V(kAExpr)   \
  V(kAExpr_1)   \
  V(kAExpr_2)   \
  V(kAExpr_3)   \
  V(kAExpr_4)   \
  V(kAExpr_5)   \
  V(kAExpr_6)   \
  V(kAExpr_7)   \
  V(kAExpr_8)   \
  V(kAExpr_9)   \
  V(kAExpr_10)   \
  V(kAExpr_11)   \
  V(kAExpr_12)   \
  V(kAExpr_13)   \
  V(kAExpr_14)   \
  V(kAExpr_15)   \
  V(kAExpr_16)   \
  V(kAExpr_17)   \
  V(kBExpr)   \
  V(kBExpr_1)   \
  V(kCExpr)   \
  V(kFuncApplication)   \
  V(kFuncApplication_1)   \
  V(kFuncApplication_2)   \
  V(kFuncApplication_3)   \
  V(kFuncApplication_4)   \
  V(kFuncApplication_5)   \
  V(kFuncApplication_6)   \
  V(kFuncExpr)   \
  V(kFuncExpr_1)   \
  V(kFuncExpr_2)   \
  V(kFuncExprWindowless)   \
  V(kFuncExprCommonSubexpr)   \
  V(kFuncExprCommonSubexpr_1)   \
  V(kFuncExprCommonSubexpr_2)   \
  V(kFuncExprCommonSubexpr_3)   \
  V(kFuncExprCommonSubexpr_4)   \
  V(kXmlRootVersion)   \
  V(kOptXmlRootStandalone)   \
  V(kXmlAttributes)   \
  V(kXmlAttributeList)   \
  V(kXmlAttributeEl)   \
  V(kDocumentOrContent)   \
  V(kXmlWhitespaceOption)   \
  V(kXmlexistsArgument)   \
  V(kXmlexistsArgument_1)   \
  V(kXmlPassingMech)   \
  V(kWithinGroupClause)   \
  V(kFilterClause)   \
  V(kWindowClause)   \
  V(kWindowDefinitionList)   \
  V(kWindowDefinition)   \
  V(kOverClause)   \
  V(kWindowSpecification)   \
  V(kWindowSpecification_1)   \
  V(kWindowSpecification_2)   \
  V(kOptExistingWindowName)   \
  V(kOptPartitionClause)   \
  V(kOptFrameClause)   \
  V(kFrameExtent)   \
  V(kFrameBound)   \
  V(kOptWindowExclusionClause)   \
  V(kRow)   \
  V(kExplicitRow)   \
  V(kImplicitRow)   \
  V(kSubType)   \
  V(kAllOp)   \
  V(kMathOp)   \
  V(kQualOp)   \
  V(kQualAllOp)   \
  V(kSubqueryOp)   \
  V(kExprList)   \
  V(kFuncArgList)   \
  V(kFuncArgExpr)   \
  V(kFuncArgListOpt)   \
  V(kTypeList)   \
  V(kArrayExpr)   \
  V(kArrayExprList)   \
  V(kExtractList)   \
  V(kExtractArg)   \
  V(kUnicodeNormalForm)   \
  V(kOverlayList)   \
  V(kOverlayList_1)   \
  V(kOverlayList_2)   \
  V(kOverlayList_3)   \
  V(kPositionList)   \
  V(kSubstrList)   \
  V(kSubstrList_1)   \
  V(kSubstrList_2)   \
  V(kSubstrList_3)   \
  V(kTrimList)   \
  V(kInExpr)   \
  V(kCaseExpr)   \
  V(kCaseExpr_1)   \
  V(kWhenClauseList)   \
  V(kWhenClause)   \
  V(kCaseDefault)   \
  V(kCaseArg)   \
  V(kColumnref)   \
  V(kIndirectionEl)   \
  V(kOptSliceBound)   \
  V(kIndirection)   \
  V(kOptIndirection)   \
  V(kOptAsymmetric)   \
  V(kOptTargetList)   \
  V(kTargetList)   \
  V(kTargetEl)   \
  V(kQualifiedNameList)   \
  V(kQualifiedName)   \
  V(kNameList)   \
  V(kName)   \
  V(kAttrName)   \
  V(kFileName)   \
  V(kFuncName)   \
  V(kAexprConst)   \
  V(kAexprConst_1)   \
  V(kAexprConst_2)   \
  V(kAexprConst_3)   \
  V(kAexprConst_4)   \
  V(kIconst)   \
  V(kSconst)   \
  V(kSignedIconst)   \
  V(kRoleId)   \
  V(kRoleSpec)   \
  V(kRoleList)   \
  V(kPLpgSQLExpr)   \
  V(kPLpgSQLExpr_1)   \
  V(kPLpgSQLExpr_2)   \
  V(kPLpgSQLExpr_3)   \
  V(kPLpgSQLExpr_4)   \
  V(kPLpgSQLExpr_5)   \
  V(kPLpgSQLExpr_6)   \
  V(kPLpgSQLExpr_7)   \
  V(kPLpgSQLExpr_8)   \
  V(kPLAssignStmt)   \
  V(kPLAssignStmt_1)   \
  V(kPLAssignStmt_2)   \
  V(kPlassignTarget)   \
  V(kPlassignEquals)   \
  V(kColId)   \
  V(kTypeFunctionName)   \
  V(kNonReservedWord)   \
  V(kColLabel)   \
  V(kBareColLabel)   \
  V(kUnreservedKeyword)   \
  V(kColNameKeyword)   \
  V(kTypeFuncNameKeyword)   \
  V(kReservedKeyword)   \
  V(kBareLabelKeyword)   \
  V(kEmptyGroupingSet)   \
  V(kIdentifier)         \
    \
  \
  \
  \
  /* Keep the old one to ensure compatibility first. Will remove below later. */  \
  V(kProgram)                                                                  \
  V(kStmtlist)                                                                 \
  V(kAlterStmt)                                                                \
  V(kAlterIndexStmt)                                                           \
  V(kSelectClauseList)                                                         \
  V(kCombineClause)                                                            \
  V(kOptFromClause)                                                            \
  V(kSelectTarget)                                                             \
  V(kOptWindowClause)                                                          \
  V(kWindowDefList)                                                            \
  V(kWindowDef)                                                                \
  V(kWindowName)                                                               \
  V(kWindow)                                                                   \
  V(kOptPartition)                                                             \
  V(kRangeOrRows)                                                              \
  V(kFrameBoundStart)                                                          \
  V(kFrameBoundEnd)                                                            \
  V(kOptFrameExclude)                                                          \
  V(kFrameExclude)                                                             \
  V(kOptExistWindowName)                                                       \
  V(kOptGroupClause)                                                           \
  V(kOptHavingClause)                                                          \
  V(kOptOnOrUsing)                                                             \
  V(kOnOrUsing)                                                                \
  V(kColumnNameList)                                                           \
  V(kOptTablePrefix)                                                           \
  V(kJoinOp)                                                                   \
  V(kOptJoinType)                                                              \
  V(kOptLimitClause)                                                           \
  V(kOptOrderClause)                                                           \
  V(kOptOrderNulls)                                                            \
  V(kOrderItemList)                                                            \
  V(kOrderItem)                                                                \
  V(kOptOrderBehavior)                                                         \
  V(kCteTableName)                                                             \
  V(kOptAllOrDistinct)                                                         \
  V(kCreateTableStmt)                                                          \
  V(kCreateIndexStmt)                                                          \
  V(kCreateViewStmt)                                                           \
  V(kDropIndexStmt)                                                            \
  V(kDropTableStmt)                                                            \
  V(kDropViewStmt)                                                             \
  V(kInsertQuery)                                                              \
  V(kValuesDefaultClause)                                                      \
  V(kExprDefaultListWithParens)                                                \
  V(kExprDefaultList)                                                                             \
  V(kSuperValuesList)                                                          \
  V(kValuesList)                                                               \
  V(kOptConflictExpr)                                                          \
  V(kIndexedColumnList)                                                        \
  V(kIndexedColumn)                                                            \
  V(kAlterAction)                                                              \
  V(kColumnDefList)                                                            \
  V(kOptColumnConstraintList)                                                  \
  V(kColumnConstraintList)                                                     \
  V(kColumnConstraint)                                                         \
  V(kConstraintType)                                                           \
  V(kForeignClause)                                                            \
  V(kOptForeignKeyActions)                                                     \
  V(kForeignKeyActions)                                                        \
  V(kOptConstraintAttributeSpec)                                               \
  V(kOptInitialTime)                                                           \
  V(kConstraintName)                                                           \
  V(kOptColumnNameListP)                                                       \
  V(kExpr)                                                                     \
  V(kOperand)                                                                  \
  V(kCastExpr)                                                                 \
  V(kCountExpr)                                                                \
  V(kAllExpr)                                                                  \
  V(kSumExpr)                                                                  \
  V(kScalarExpr)                                                               \
  V(kUnaryExpr)                                                                \
  V(kBinaryExpr)                                                               \
  V(kLogicExpr)                                                                \
  V(kBetweenExpr)                                                              \
  V(kExistsExpr)                                                               \
  V(kCaseList)                                                                 \
  V(kCaseClause)                                                               \
  V(kCompExpr)                                                                 \
  V(kExtractExpr)                                                              \
  V(kDatetimeField)                                                            \
  V(kArrayIndex)                                                               \
  V(kLiteral)                                                                  \
  V(kStringLiteral)                                                            \
  V(kBoolLiteral)                                                              \
  V(kNumLiteral)                                                               \
  V(kIntLiteral)                                                               \
  V(kFloatLiteral)                                                             \
  V(kOptIfNotExist)                                                            \
  V(kOptIfExist)                                                               \
  V(kTableName)                                                                \
  V(kColumnName)                                                               \
  V(kViewName)                                                                 \
  V(kIndexName)                                                                \
  V(kTablespaceName)                                                           \
  V(kRoleName)                                                                 \
  V(kExtensionName)                                                            \
  V(kIndexStorageParameterList)                                                \
  V(kIndexStorageParameter)                                                    \
  V(kBinaryOp)                                                                 \
  V(kOptNot)                                                                   \
  V(kTypeName)                                                                 \
  V(kCharacterType)                                                            \
  V(kCharacterConflicta)                                                       \
  V(kNumericType)                                                              \
  V(kOptTableConstraintList)                                                   \
  V(kTableConstraintList)                                                      \
  V(kUnknown)                                                                  \
  V(kEmpty)                                                                    \
  V(kOptAlias)                                                                 \
  V(kOptSemi)                                                                  \
  V(kOptOwnedby)                                                               \
  V(kOnOffLiteral)                                                             \
  V(kOptIfNotExistIndex)                                                       \
  V(kOptOnly)                                                                  \
  V(kOptUsingMethod)                                                           \
  V(kMethodName)                                                               \
  V(kOptTablespace)                                                            \
  V(kOptWherePredicate)                                                        \
  V(kPredicateName)                                                            \
  V(kOptWithIndexStorageParameterList)                                         \
  V(kOptIncludeColumnNameList)                                                 \
  V(kCollationName)                                                            \
  V(kOptColumnOrExpr)                                                          \
  V(kIndexedCreateIndexRestStmtList)                                           \
  V(kCreateIndexRestStmt)                                                      \
  V(kOptIndexOpclassParameterList)                                             \
  V(kOptOpclassParameterList)                                                  \
  V(kIndexOpclassParameterList)                                                \
  V(kIndexOpclassParameter)                                                    \
  V(kOpclassName)                                                              \
  V(kOpclassParameterName)                                                     \
  V(kOpclassParameterValue)                                                    \
  V(kOptIndexNameList)                                                         \
  V(kIndexNameList)                                                            \
  V(kOptCascadeRestrict)                                                       \
  V(kRoleSpecification)                                                        \
  V(kUserName)                                                                 \
  V(kUserNameList)                                                                 \
  V(kGroupName)                                                                \
  V(kDropGroupStmt)                                                            \
  V(kGroupNameList)                                                            \
  V(kValuesStmt)                                                            \
  V(kExprListWithParens)                                                            \
  V(kAllorDistinct)                                                            \
  V(kOptSelectTarget)                                                           \
  V(kOrderClause)                                                           \
  V(kTableNameList)                                                        \
  V(kOptNoWaitorSkip)                                                        \
  V(kForLockingItemList)                                                        \
  V(kAlterViewStmt)                                                            \
  V(kAlterViewAction)                                                          \
  V(kOwnerSpecification)                                                       \
  V(kSchemaName)                                                               \
  V(kIndexOptViewOptionList)                                                   \
  V(kIndexOptViewOption)                                                       \
  V(kOptEqualViewOptionValue)                                                  \
  V(kViewOptionName)                                                           \
  V(kViewOptionValue)                                                          \
  V(kViewOptionNameList)                                                       \
  V(kOptReindexOptionList)                                                      \
  V(kReindexOptionList)                                                         \
  V(kReindexOption)                                                             \
  V(kDatabaseName)                                                              \
  V(kSystemName)                                                                \
  V(kOptWithOptionList)                                                        \
  V(kOptionList)                                                               \
  V(kOption)                                                                   \
  V(kRoleNameList)                                                             \
  V(kOptEncrypted)                                                             \
  V(kViewNameList)                                                             \
  V(kOptTempToken)                                                             \
  V(kOptRecursive)                                                             \
  V(kOptWithViewOptionList)                                                    \
  V(kCreateTableAsStmt)                                                        \
  V(kOptWithStorageParameterList)                                              \
  V(kAlterTblspcStmt)                                                          \
  V(kIndexOptTablespaceOptionList)                                             \
  V(kIndexOptTablespaceOption)                                             \
  V(kOptEqualTablespaceOptionValue)                                             \
  V(kTablespaceOptionName)                                             \
  V(kTablespaceOptionValue)                                             \
  V(kAlterConversionStmt)                                                       \
  V(kConversionName)                                                            \
  V(kOptWithReplotions) \
  V(kHashPartboundElem_1) \


#define ALLDATATYPE(V)                                                         \
  V(DataWhatever)                                                              \
  V(DataTableName)                                                             \
  V(DataColumnName)                                                            \
  V(DataViewName)                                                              \
  V(DataFunctionName)                                                          \
  V(DataPragmaKey)                                                             \
  V(DataPragmaValue)                                                           \
  V(DataTableSpaceName)                                                        \
  V(DataSequenceName)                                                          \
  V(DataExtensionName)                                                         \
  V(DataRoleName)                                                              \
  V(DataSchemaName)                                                            \
  V(DataDatabase)                                                              \
  V(DataTriggerName)                                                           \
  V(DataWindowName)                                                            \
  V(DataTriggerFunction)                                                       \
  V(DataDomainName)                                                            \
  V(DataAliasName)                                                             \
  V(DataAliasTableName)                                                        \
  V(DataLiteral)                                                               \
  V(DataIndexName)                                                             \
  V(DataUserName)                                                              \
  V(DataGroupName)                                                             \
  V(DataDatabaseName)                                                          \
  V(DataSystemName)                                                            \
  V(DataConversionName)                                                        \
  V(DataAggregateArguments)                                                    \
  V(DataNonReservedWord)                                                       \
  V(DataFixLater)                                                              \
  V(DataConstraintName)                                                        \
  V(DataRelOption)                                                             \
  V(DataGenericType)                                                           \
  V(DataTableNameFollow)                                                       \
  V(DataColumnNameFollow)                                                      \
  V(DataCollate)                                                               \
  V(DataStatisticName)                                                  \
  V(DataForeignTableName)




#define SWITCHSTART switch (case_idx_) {

#define SWITCHEND                                                              \
  default:                                                                     \
                                                                               \
    assert(0);                                                                 \
    }

#define CASESTART(idx) case CASE##idx: {

#define CASEEND                                                                \
  break;                                                                       \
  }

#define TRANSLATESTART IR *res = NULL;

#define GENERATESTART(len) case_idx_ = rand() % len;

#define GENERATEEND return;

#define TRANSLATEEND                                                           \
  v_ir_collector.push_back(res);                                               \
                                                                               \
  return res;

#define TRANSLATEENDNOPUSH return res;

#define SAFETRANSLATE(a) (assert(a != NULL), a->translate(v_ir_collector))

#define SAFEDELETE(a)                                                          \
  if (a != NULL)                                                               \
  a->deep_delete()

#define SAFEDELETELIST(a)                                                      \
  for (auto _i : a)                                                            \
  SAFEDELETE(_i)

#define OP1(a) new IROperator(a)

#define OP2(a, b) new IROperator(a, b)

#define OP3(a, b, c) new IROperator(a, b, c)

#define OPSTART(a) new IROperator(a)

#define OPMID(a) new IROperator("", a, "")

#define OPEND(a) new IROperator("", "", a)

#define OP0() new IROperator()

#define TRANSLATELIST(t, a, b)                                                 \
  res = SAFETRANSLATE(a[0]);                                                   \
  res = new IR(t, OP0(), res);                                                 \
  v_ir_collector.push_back(res);                                               \
  for (int i = 1; i < a.size(); i++) {                                         \
    IR *tmp = SAFETRANSLATE(a[i]);                                             \
    res = new IR(t, OPMID(b), res, tmp);                                       \
    v_ir_collector.push_back(res);                                             \
  }

#define PUSH(a) v_ir_collector.push_back(a)

#define MUTATESTART                                                            \
  IR *res = NULL;                                                              \
  auto randint = get_rand_int(3);                                              \
  switch (randint) {

#define DOLEFT case 0: {

#define DORIGHT                                                                \
  break;                                                                       \
  }                                                                            \
                                                                               \
  case 1: {

#define DOBOTH                                                                 \
  break;                                                                       \
  }                                                                            \
  case 2: {

#define MUTATEEND                                                              \
  }                                                                            \
  }                                                                            \
                                                                               \
  return res;

#endif
